dplyr 和 tidyr 包教程
概述
dplyr 和 tidyr 是 R 语言中用于数据处理和清洗的两个非常强大的包。dplyr 提供了简洁的语法来处理数据框,而 tidyr 则专注于数据的整理和重塑。这两个包通常一起使用,以实现高效的数据处理。
安装和加载包
在开始之前,首先需要安装并加载 dplyr 和 tidyr 包。
# 安装包
install.packages("dplyr")
install.packages("tidyr")
# 加载包
library(dplyr)
library(tidyr)
dplyr 包
1. 基本操作
dplyr 提供了几个核心函数来处理数据框:
select(): 选择列filter(): 过滤行mutate(): 创建或修改列arrange(): 排序行summarize(): 汇总数据group_by(): 分组操作
示例数据
我们使用 dplyr 包自带的 starwars 数据集作为示例。
# 查看数据集
head(starwars)
2. 选择列 (select())
选择特定的列:
# 选择名字和性别列
selected_data <- select(starwars, name, gender)
head(selected_data)
3. 过滤行 (filter())
根据条件过滤行:
# 过滤出性别为“male”的行
filtered_data <- filter(starwars, gender == "male")
head(filtered_data)
4. 创建或修改列 (mutate())
创建新的列或修改现有列:
# 创建一个新列,表示身高是否超过180cm
mutated_data <- mutate(starwars, height_over_180 = height > 180)
head(mutated_data)
5. 排序行 (arrange())
按列排序:
# 按身高降序排列
arranged_data <- arrange(starwars, desc(height))
head(arranged_data)
6. 汇总数据 (summarize())
对数据进行汇总:
# 计算平均身高
summary_data <- summarize(starwars, avg_height = mean(height, na.rm = TRUE))
summary_data
7. 分组操作 (group_by())
按组进行操作:
# 按性别分组,计算每组的平均身高
grouped_data <- starwars %>%
group_by(gender) %>%
summarize(avg_height = mean(height, na.rm = TRUE))
grouped_data
tidyr 包
1. 数据整理
tidyr 提供了几个函数来整理数据:
gather(): 将宽数据转换为长数据spread(): 将长数据转换为宽数据separate(): 将一列拆分为多列unite(): 将多列合并为一列
2. 宽数据转换为长数据 (gather())
# 创建示例数据
wide_data <- data.frame(
name = c("Alice", "Bob"),
math = c(90, 80),
science = c(85, 95)
)
# 转换为长数据
long_data <- gather(wide_data, key = "subject", value = "score", math, science)
long_data
3. 长数据转换为宽数据 (spread())
# 转换为宽数据
wide_data_again <- spread(long_data, key = "subject", value = "score")
wide_data_again
4. 拆分列 (separate())
# 创建示例数据
separated_data <- data.frame(
full_name = c("Alice Smith", "Bob Johnson")
)
# 拆分列
separated_data <- separate(separated_data, full_name, into = c("first_name", "last_name"), sep = " ")
separated_data
5. 合并列 (unite())
# 合并列
united_data <- unite(separated_data, full_name, first_name, last_name, sep = " ")
united_data
实践练习
练习 1: 数据清洗
- 读取一个包含缺失值的 CSV 文件。
- 使用
dplyr和tidyr进行数据清洗,包括删除缺失值、填充缺失值、转换数据格式等。
练习 2: 数据重塑
- 创建一个包含多个变量的宽数据框。
- 使用
tidyr将其转换为长数据格式。 - 再将其转换回宽数据格式。
练习 3: 数据分析
- 使用
dplyr对一个数据集进行分组汇总操作。 - 计算每组的平均值、最大值和最小值。
总结
dplyr 和 tidyr 是 R 语言中处理数据的强大工具。通过本教程,你应该已经掌握了如何使用这两个包进行数据清洗、整理和分析。继续练习和探索,你将能够更高效地处理各种数据任务。